// 二级指针示例
#include <stdio.h>

// 在 C 语言中，一级指针和二级指针是指针类型的两种不同形式，它们的主要区别在于指向的对象不同：
// 一级指针
//     指向一个普通变量（如 int、char 等类型的变量）
//      存储的是所指向变量的内存地址
//      声明形式：类型 *指针名;
//      例如：int *p; 表示 p 是一个指向 int 类型变量的一级指针
// 二级指针
//     指向一个一级指针变量
//      存储的是一级指针变量的内存地址
//      声明形式：类型 **指针名;
//      例如：int **pp; 表示 pp 是一个指向 int 类型一级指针的二级指针
// 可以用一个简单的比喻理解：
//      一级指针相当于一张纸条，上面写着一个房间的地址
//      二级指针相当于另一张纸条，上面写着 "写有房间地址的那张纸条" 的存放位置

int main()
{
  int a = 42;    // 普通变量
  int *p = &a;   // 指针p指向a的地址
  int **pp = &p; // 指针pp指向p的地址

  printf("a: %d\n", a);
  printf("p: %d\n", *p);
  printf("pp: %d\n", **pp);

  return 0;
}